01xz - Digital Logic and Computer Architecture 01xz_wiki http://www.01xz.net/wiki/Main_Page MediaWiki 1.42.1 first-letter Media Special Talk User User talk Project Project talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Main Page 0 1 1 2017-08-26T20:07:03Z MediaWiki default 0 wikitext text/x-wiki <strong>MediaWiki has been installed.</strong> Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list] * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ] * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] * [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language] * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki] 5702e4d5fd9173246331a889294caf01a3ad3706 6 1 2017-08-30T23:45:59Z Henry 1 wikitext text/x-wiki <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net Verilog]</div> Verilog problem set </div> a81d52ae0f0b9e1e65bab4daf703964805ab5dde 7 6 2017-08-30T23:46:58Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Stuff == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net Verilog]</div> Verilog problem set </div> 8394446700e6f57255db52aa58021fc785a18135 8 7 2017-08-31T07:39:53Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> This site has a collection of tools that can be used to help learn digital logic (in Verilog) and assembly language programming (Nios II and ARMv7). These were originally created to go with several <abbr title="Mainly ECE241, 243, 253">second-year computer engineering courses</abbr> at the University of Toronto. You may find these useful either on their own, or used as part of a similar course. Why? Practice is essential when learning any new language (whether programming, HDL, or human). These tools were created to make it easier to do more practice with feedback. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net Verilog]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net Assembly]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 1db3d99a2208f04f21556dbf112344e406117307 9 8 2017-08-31T22:27:21Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> This site has a collection of tools that can be used to help learn digital logic (in Verilog) and assembly language programming (Nios II and ARMv7). These were originally created to go with several <abbr title="Mainly ECE241, 243, 253">second-year computer engineering courses</abbr> at the University of Toronto. You may find these useful either on their own, or used as part of a similar course. Why? Practice is essential when learning any new language (whether programming, HDL, or human). These tools were created to make it easier to do more practice with feedback. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net Verilog]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net Assembly]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 1f4e354b804f0cc7a8bfc44eab91aabf20813535 10 9 2017-09-03T22:52:48Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> learning design of computer hardware and computers? This site has a collection of tools that can be used to help learn digital logic (in Verilog) and assembly language programming (Nios II and ARMv7). These were originally created to go with several <abbr title="Mainly ECE241, 243, 253">second-year computer engineering courses</abbr> at the University of Toronto. You may find these useful either on their own, or used as part of a similar course. Why? Practice is essential when learning any new language (whether programming, HDL, or human). These tools were created to make it easier to do more practice with feedback. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net Verilog]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net Assembly]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. c89bc066b224ae962964b5043633ea753eb62852 11 10 2017-09-04T05:05:51Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that can be used to help learn digital logic (in Verilog) and assembly language programming (Nios II and ARMv7). These were originally created to go with several <abbr title="Mainly ECE241, 243, 253">second-year computer engineering courses</abbr> at the University of Toronto. You may find these useful either on their own, or used as part of a similar course. Why? Practice is essential when learning any new language (whether programming, HDL, or human). These tools were created to make it easier to do more practice with feedback. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net Verilog]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net Assembly]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 64190d537addafcf566ee52ac6ca9650f72444e4 12 11 2017-09-05T04:52:07Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn several fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net Verilog]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net Assembly]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 1cb1e04dc6a43568c5e28df412faf80060a3e2ee 14 12 2017-09-05T04:57:53Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn several fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net Assembly]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. f66f3ac49c8024df52b0afe960e1c6b3a388b371 15 14 2017-09-05T04:59:40Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net Assembly]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 2f6ef92b65a4e45dcf1bff7d428ffc077cf7b6af 16 15 2017-09-05T05:00:16Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 2fa3cf1586a6d9d77f9dd2ec98465eeb11e02596 19 16 2017-09-05T19:29:34Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net|60x42px]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 77f1e78b66dd43b424e969612a6f620dc388e1bf 20 19 2017-09-05T19:33:27Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net|class="imghalf"]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 770538d2e0fae8f4bddec29997f3072b012ac428 21 20 2017-09-05T19:35:08Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net|class=imghalf]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. ec67ad16b065b4b38d09806df22e827aa9860f10 22 21 2017-09-05T19:36:44Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_hdlbits.png|link=http://verilog.stuffedcow.net]][http://nios.stuffedcow.net Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 5c418ae830aea83233c9f6cad7828bbf1156c714 24 22 2017-09-05T19:58:40Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 499ebdc9b4852c1170dc63b2913dd6f8f3165f6f 25 24 2017-09-05T20:00:14Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.6em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 34a1e5aadca03a48e73a52e5275b655f24f0dd16 26 25 2017-09-05T20:00:48Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> Verilog problem set, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 7049fbcda6571d07748a4add70c3af11702d654b 27 26 2017-09-05T20:10:11Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> This is a set of short Verilog problems, with an online judge to check your solution for correctness. The problems star with a tutorial style that teaches basic Verilog language features. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. a26cd6cb346a6141a9d0d01fc04324eac96ab6ee 28 27 2017-09-05T23:57:06Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems, with an online judge to check solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> Two assembly language problem sets, for Nios II and ARMv7, online judge, in a semi-tutorial style. Start with explanations of language features followed by short exercises in using them, then progress onto increasingly complex designs. Online judge allows instant feedback on code correctness (but unfortunately not coding style), which allows much more practice than the traditional weekly labs or assignments. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> A simulator and debugger for Nios II and ARMv7 systems, including some I/O devices (excludes MMU). The simulated I/O devices are based on the computer systems used by the Altera University Program. Can be used to test and debug assembly language programs without having real hardware. Debugger is better than real hardware: Has assertions to catch common mistakes, and faster. Simulation speed tends to be slower than hardware, which may limit its use in real-time applications. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. af6289576d5cb8e84ab8c3def325bb43fd9f9a9a 29 28 2017-09-06T19:06:36Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #fcfeff; margin: 0.5em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems, with an online judge to check solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> ASMBits is a set of short assembly language programming problems, in the same style as HDLBits. There are currently two similar sets of problems, one for each instruction set (Nios II and ARMv7). </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> This is a simulator and debugger for Nios II and ARMv7 systems, including some I/O devices. The simulated I/O devices are based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. ba8de7ac1016166abfdf1caa5c76cd7eb5a6a4f3 30 29 2017-09-06T20:32:19Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems, with an online judge to check solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> ASMBits is a set of short assembly language programming problems, in the same style as HDLBits. There are currently two similar sets of problems, one for each instruction set (Nios II and ARMv7). </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> This is a simulator and debugger for Nios II and ARMv7 systems, including some I/O devices. The simulated I/O devices are based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 5f1c40d73ce7e40228490ebcaccef7a0d588d47e 33 30 2017-09-07T04:18:31Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year undergraduate computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to encourage doing more practice on short and quick problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems, with an online judge to check solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> ASMBits is a set of short assembly language programming problems, in the same style as HDLBits. There are currently two similar sets of problems, one for each instruction set (Nios II and ARMv7). </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> This is a simulator and debugger for Nios II and ARMv7 systems, including some I/O devices. The simulated I/O devices are based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 491e223651115dd2c38e91950b2fda6e98187a3e 34 33 2017-09-07T18:13:24Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site helps you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year undergraduate computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems, with an online judge to check solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> ASMBits is a set of short assembly language programming problems, in the same style as HDLBits. There are currently two similar sets of problems, one for each instruction set (Nios II and ARMv7). </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> This is a simulator and debugger for Nios II and ARMv7 systems, including some I/O devices. The simulated I/O devices are based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. f22f2c83c672f73847f815acf7d58f237bea9751 35 34 2017-09-07T19:44:48Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year undergraduate computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems, with an online judge to check solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> ASMBits is a set of short assembly language programming problems, in the same style as HDLBits. There are currently two similar sets of problems, one for each instruction set (Nios II and ARMv7). </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> This is a simulator and debugger for Nios II and ARMv7 systems, including some I/O devices. The simulated I/O devices are based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. e7e132007d0c6e152371f24698c521bea2f2c524 36 35 2017-09-07T23:06:08Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> This site has a collection of tools that are used to help learn some fundamental topics in the design of computer systems: digital logic and assembly language programming. These tools were originally created to go with several <abbr title="Mainly ECE241, ECE243, ECE253">second-year undergraduate computer engineering courses</abbr> at the University of Toronto. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems. <html><a href="#" onclick="$('#panel1_more').toggle(); return false;">[Show more]</a></html> <div id="panel1_more" style="display:none;">An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> This is a simulator and debugger for Nios II and ARMv7 systems. <html><a href="#" onclick="$('#panel3_more').toggle(); return false;">[Show more]</a></html> <div id="panel3_more" style="display:none;">The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. d8f1b819cf3c8b0b669d952a35a05f383cc5ef28 37 36 2017-09-07T23:26:59Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits &mdash; Verilog practice]</div> HDLBits is a set of short Verilog design problems. <html><a href="#" onclick="$('#panel1_more').toggle(); return false;">[Show more]</a></html> <div id="panel1_more" style="display:none;">An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits &mdash; Assembly programming practice]</div> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://nios.stuffedcow.net CPU Simulator]</div> This is a simulator and debugger for Nios II and ARMv7 systems. <html><a href="#" onclick="$('#panel3_more').toggle(); return false;">[Show more]</a></html> <div id="panel3_more" style="display:none;">The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 4c5e27c6d0e0de9fcf753e5cd91695955c48a86d 41 37 2017-09-15T22:48:03Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://verilog.stuffedcow.net]][http://verilog.stuffedcow.net HDLBits]</div> HDLBits is a set of short Verilog design problems. <html><a href="#" onclick="$('#panel1_more').toggle(); return false;">[Show more]</a></html> <div id="panel1_more" style="display:none;">An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.stuffedcow.net]][http://asmbits.stuffedcow.net ASMBits]</div> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://nios.stuffedcow.net]][http://cpulator.01xz.net CPUlator]</div> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. <html><a href="#" onclick="$('#panel3_more').toggle(); return false;">[Show more]</a></html> <div id="panel3_more" style="display:none;">The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 4c0617b1e41acd5b8fe7d92b8a8b2a8dedd0c141 42 41 2017-09-16T01:25:03Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=http://hdlbits.01xz.net]][http://hdlbits.01xz.net HDLBits]</div> HDLBits is a set of short Verilog design problems. <html><a href="#" onclick="$('#panel1_more').toggle(); return false;">[Show more]</a></html> <div id="panel1_more" style="display:none;">An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=http://asmbits.01xz.net]][http://asmbits.01xz.net ASMBits]</div> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=http://cpulator.01xz.net]][http://cpulator.01xz.net CPUlator]</div> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. <html><a href="#" onclick="$('#panel3_more').toggle(); return false;">[Show more]</a></html> <div id="panel3_more" style="display:none;">The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 0591f1dedcdd3995034b48e130dd0048e62c0464 45 42 2017-09-22T08:36:45Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> HDLBits is a set of short Verilog design problems. <html><a href="#" onclick="$('#panel1_more').toggle(); return false;">[Show more]</a></html> <div id="panel1_more" style="display:none;">An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator]</div> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. <html><a href="#" onclick="$('#panel3_more').toggle(); return false;">[Show more]</a></html> <div id="panel3_more" style="display:none;">The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 9097bb5fac3f62691d981624963233e15a79c11d 46 45 2017-09-24T19:34:35Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> HDLBits is a set of short Verilog design problems. <html><a href="#" onclick="$('#panel1_more').toggle(); return false;">[Show more]</a></html> <div id="panel1_more" style="display:none;">An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. <html><a href="#" onclick="$('#panel3_more').toggle(); return false;">[Show more]</a></html> <div id="panel3_more" style="display:none;">The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 2ebf52ff684abfcc27c4b0e5e726a20ff02caccc 47 46 2017-09-24T19:45:09Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]<html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus">[+]</a></html></div> <div id="panel1_more" style="display:none;">HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. <html><a href="#" onclick="$('#panel3_more').toggle(); return false;">[Show more]</a></html> <div id="panel3_more" style="display:none;">The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 4a6832725bf70a501b596e1559122a3ed9420d92 48 47 2017-09-24T20:01:54Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } div.panel a.plus { float:right; font-size:36px; line-height:42px; color: #00f; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head">[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]<html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html></div> <div id="panel1_more" style="display:none;">HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head">[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]<html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html></div> <div id="panel2_more" style="display:none;">ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.</div> </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]<html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html></div> <div id="panel3_more" style="display:none;">CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head">[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]<html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html></div> <div id="panel4_more" style="display:none;">This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator.<div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 9320e84529804e675aa057fbf00a703cdd953d89 49 48 2017-09-24T20:10:56Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #00f; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;">HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;">ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.</div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;">CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;">This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator.<div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 8b0820054aee80f6257f55051aa4f27bf17e1f93 50 49 2017-09-24T20:17:00Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;">HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;">ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.</div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;">CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;">This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator.<div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 5f587c66b84801271df9e3fa2ef18b525c2169e0 51 50 2017-09-24T20:27:34Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin-right: 0.6em; width: 60px; height: 42px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;">HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;">ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.</div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;">CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;">This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator.</div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 8f736422c586e25476ac71ffc6aceef59e2aa428 52 51 2017-09-24T20:33:31Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.5em; display: block; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin: 10px 0.5em 11px 0; width: 30px; height: 21px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;">HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;">ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.</div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;">CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;">This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator.</div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 64e0230cf3b5bb43126eaa6008e63a7e84b11930 53 52 2017-09-24T20:35:43Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;">HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;">ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.</div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;">CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;">This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator.</div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 47d63d2b4f013a87e0ba0f4a14ce7b1404dfe2b5 MediaWiki:Sidebar 8 3 3 2017-08-26T20:11:59Z Henry 1 Created page with " * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help * TOOLBOX * LANGUAGES" wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help * TOOLBOX * LANGUAGES f966574c81834c40d3b3c9ac7ff6d0e1405ad27b 5 3 2017-08-26T20:28:22Z Henry 1 wikitext text/x-wiki * Projects ** http://verilog.stuffedcow.net|Verilog Problem Set ** http://asmbits.stuffedcow.net|Nios II and ARMv7 Assembly Problem Set ** http://nios.stuffedcow.net|Nios II and ARMv7 Simulator a77b2c2566298842b18ccf5d80f8e872d3c8c971 31 5 2017-09-06T21:54:34Z Henry 1 wikitext text/x-wiki * Projects ** http://verilog.stuffedcow.net|Verilog Problem Set ** http://asmbits.stuffedcow.net|Assembly Language Problem Set ** http://nios.stuffedcow.net|Nios II and ARMv7 Simulator c9c1984f305a9fa473a2b34ec44ad75146a98c77 43 31 2017-09-20T05:26:51Z Henry 1 wikitext text/x-wiki * Projects ** http://hdlbits.01xz.net|HDLBits Verilog Problem Set ** http://asmbits.01xz.net|ASMBits Assembly Language Problem Set ** http://cpulator.01xz.net|CPUlator Nios II and ARMv7 Simulator adaa8945444ad7c0942ddfb90a6673e8a386b805 44 43 2017-09-20T05:27:14Z Henry 1 wikitext text/x-wiki * Projects ** http://hdlbits.01xz.net|HDLBits Verilog Problem Set ** http://asmbits.01xz.net|ASMBits Nios/ARMv7 Problem Set ** http://cpulator.01xz.net|CPUlator Nios II and ARMv7 Simulator cddd66fd30b4d84d496632d56efab8d7defec90d File:Logo seq.png 6 4 13 2017-09-05T04:56:00Z Henry 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Asmbits logo.png 6 5 17 2017-09-05T19:27:32Z Henry 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 18 17 2017-09-05T19:28:39Z Henry 1 Henry uploaded a new version of [[File:Asmbits logo.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Logo niossim.png 6 6 23 2017-09-05T19:58:11Z Henry 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Project:About 4 7 38 2017-09-11T02:24:02Z Henry 1 Created page with "== What's with the name? == The name <b>01xz.net</b> is named after the four logic values used by nets (and variables) in Verilog: '''0''', '''1''', '''x''' (unknown/don't-car..." wikitext text/x-wiki == What's with the name? == The name <b>01xz.net</b> is named after the four logic values used by nets (and variables) in Verilog: '''0''', '''1''', '''x''' (unknown/don't-care), and '''z''' (high impedance). SystemVerilog added two-state (0 and 1) variables to the language, but nets are still always four-state. 8a637e280be4d3cb3d4fe603c28a2ee7a46b9043 39 38 2017-09-11T02:25:29Z Henry 1 wikitext text/x-wiki == What's with the name? == The name <b>01xz.net</b> is named after the four-state logic used by nets (and variables) in Verilog: '''0''', '''1''', '''x''' (unknown/don't-care), and '''z''' (high impedance). SystemVerilog added two-state (0 and 1) variables to the language, but nets are still always four-state. 3e96a0dc06dd552da333373c645ab13de5ec6bd2 40 39 2017-09-11T02:26:48Z Henry 1 /* What's with the name? */ wikitext text/x-wiki === What's with the name? === The name <b>01xz.net</b> is named after the four-state logic used by nets (and variables) in Verilog: '''0''', '''1''', '''x''' (unknown/don't-care), and '''z''' (high impedance). SystemVerilog added two-state (0 and 1) variables to the language, but nets are still always four-state. 909d0ef89e92eb34e9aa8f1c48a0c68ec9cea106 MediaWiki:Sidebar 8 3 54 44 2017-09-24T20:40:57Z Henry 1 wikitext text/x-wiki * Projects ** http://hdlbits.01xz.net|HDLBits Verilog Problem Set ** http://asmbits.01xz.net|ASMBits Nios/ARMv7 Problem Set ** http://cpulator.01xz.net|CPUlator Nios II Simulator ** http://cpulator.01xz.net/?sys=arm|CPUlator ARMv7 Simulator 5c1ace221b78f82c9fadb85a16187200486b2e7e 57 54 2017-09-28T07:33:22Z Henry 1 wikitext text/x-wiki * Projects ** //hdlbits.01xz.net|HDLBits Verilog Problem Set ** http://asmbits.01xz.net|ASMBits Nios/ARMv7 Problem Set ** http://cpulator.01xz.net|CPUlator Nios II Simulator ** http://cpulator.01xz.net/?sys=arm|CPUlator ARMv7 Simulator 549940428fe977aa02badc8745c7df072b359cc0 58 57 2017-09-28T07:34:21Z Henry 1 wikitext text/x-wiki * Projects ** https://hdlbits.01xz.net|HDLBits Verilog Problem Set ** https://asmbits.01xz.net|ASMBits Nios/ARMv7 Problem Set ** https://cpulator.01xz.net|CPUlator Nios II Simulator ** https://cpulator.01xz.net/?sys=arm|CPUlator ARMv7 Simulator 4b40bc9b828de79a3782ff80935096a35cac0a85 60 58 2017-10-03T21:16:45Z Henry 1 wikitext text/x-wiki * Projects ** https://hdlbits.01xz.net/|HDLBits — Verilog practice ** https://asmbits.01xz.net/|ASMBits — Assembly language practice ** https://cpulator.01xz.net/|CPUlator — Nios II simulator ** https://cpulator.01xz.net/arm|CPUlator — ARMv7 simulator 5c9ca1d62bb8cf6413a342dee4ec7765b6ffc78c 72 60 2017-11-14T21:29:53Z Henry 1 wikitext text/x-wiki * Projects ** https://hdlbits.01xz.net/|HDLBits — Verilog practice ** https://asmbits.01xz.net/|ASMBits — Assembly language practice ** https://cpulator.01xz.net/|CPUlator — Nios II simulator ** https://cpulator.01xz.net/arm|CPUlator — ARMv7 simulator * About ** [[Project:About|About]] e365df3fd8f755239deb06441d6b64625e159ffe 73 72 2017-11-14T21:33:11Z Henry 1 wikitext text/x-wiki * Projects ** https://hdlbits.01xz.net/|HDLBits — Verilog practice ** https://asmbits.01xz.net/|ASMBits — Assembly language practice ** https://cpulator.01xz.net/|CPUlator — Nios II simulator ** https://cpulator.01xz.net/arm|CPUlator — ARMv7 simulator * About ** [[Project:About]]|About 2e852917d56ad85344d36523e9d747f73b907086 74 73 2017-11-14T21:33:22Z Henry 1 wikitext text/x-wiki * Projects ** https://hdlbits.01xz.net/|HDLBits — Verilog practice ** https://asmbits.01xz.net/|ASMBits — Assembly language practice ** https://cpulator.01xz.net/|CPUlator — Nios II simulator ** https://cpulator.01xz.net/arm|CPUlator — ARMv7 simulator * About ** Project:About|About f5b2b0e2f2ba4c3a444ca52b5ee89e431807e80c Main Page 0 1 55 53 2017-09-25T04:41:19Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits.</div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator.</div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 66ece6aed69c8f31d86154da0819d2f690ac45ab 56 55 2017-09-25T04:42:25Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/?sys=arm]][//cpulator.01xz.net/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. fb5e54cd59bc78f3f3105deee392476906598497 59 56 2017-09-29T22:04:57Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. The simulator can be used to test and debug assembly language programs without having real hardware. It is complete enough to do most lab assignments that are based on Altera's computer systems. It can also be used with the ASMBits problems. The simulator's debugger includes run-time assertions to catch common mistakes (which hardware cannot do), but simulation speed tends to be slower than hardware. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. dba17cadc76bb0cba596f0fe65892d934bfc2993 61 59 2017-11-12T00:10:22Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and perhaps used for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common mistakes (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. c4d0123823a06f833e3d3f9c0519f87ef84ac57c 62 61 2017-11-12T01:01:45Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel a.plus { display: inline-block; float: right; font-size:36px; line-height:42px; color: #aaa; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and perhaps used for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common mistakes (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Practice the basics first so that you become quick and accurate at the simple things. * '''Assembly coding assignments''': The CPUlator simulator is a nearly-complete simulation of a Nios and ARMv7 system. It's quicker and easier to debug in the simulator, and in almost all cases they will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Suggesting exercises that coincide with the current topic may be useful. * '''Examples''': When answering student questions (e.g., on discussion boards), I often like to code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to a code example, while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. d491550867027b07a1dbff323711675ccee0dd74 63 62 2017-11-14T06:45:34Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and perhaps used for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common mistakes (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Practice the basics first so that you become quick and accurate at the simple things. * '''Assembly coding assignments''': The CPUlator simulator is a nearly-complete simulation of a Nios and ARMv7 system. It's quicker and easier to debug in the simulator, and in almost all cases they will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Suggesting exercises that coincide with the current topic may be useful. * '''Examples''': When answering student questions (e.g., on discussion boards), I often like to code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to a code example, while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 5e7acb9d34fe2c6657a06f1b2b101591027711cd 64 63 2017-11-14T08:05:23Z Henry 1 /* How to use? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and perhaps used for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common mistakes (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often like to code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 4e8f47b0e2012cf4a7ea39c851e9c8d29a99316a 65 64 2017-11-14T08:06:19Z Henry 1 /* How to use? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> These tools were originally created to complement several second-year undergraduate computer engineering <abbr title="ECE241, ECE243, ECE253">courses</abbr> at the University of Toronto, and have since been used by other similar courses. These courses cover digital logic design using Verilog and assembly language programming using Nios II and ARMv7 instruction sets. You may find these tools useful either on their own, or used as part of a similar course. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and perhaps used for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common mistakes (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. e8660fa75124a4a7ade356a784294fb3752e0b13 66 65 2017-11-14T08:14:40Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * '''HDLBits''': A problem set and online judge to practice digital circuit design in Verilog * '''ASMBits''': Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * '''CPUlator''': An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and perhaps used for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common mistakes (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 1b0ccf3561c1f89724faf93ff719cf1f3ef68346 67 66 2017-11-14T08:16:05Z Henry 1 /* Welcome */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and perhaps used for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common mistakes (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 57640f9a84ea567592b9313e868400292c3b8d49 68 67 2017-11-14T08:17:15Z Henry 1 /* What's here? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=/asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. c862bc8d15db0846b566bc60da531d049ee35efb 69 68 2017-11-14T09:07:29Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel a { color: #000; } div.panel a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. b2f7f330fa1d62972a2c643c8a3bd1e9bd0cd5a3 70 69 2017-11-14T19:48:21Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>Instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 97afcb6c3f4e73938909bb72eab5de0e9760a9eb 71 70 2017-11-14T19:50:34Z Henry 1 /* How to use? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 393a34ddf385650609d89b4e3c663852a364e69d 78 71 2017-11-17T20:10:14Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.5em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 3f6018013b6c555cfde59ffe67e7a7d5800f403c 79 78 2017-11-17T20:11:32Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. 966c7c3966ae16073b1e4303a04d039b419b17d4 80 79 2017-11-17T20:12:21Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> d84a39a78a5ddc17e80944340ab6da1db3e89e60 82 80 2017-11-17T20:13:59Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. </div> </div> 610dca77471f5d6b88d7beb728081cada0d8cb90 83 82 2017-11-17T22:26:15Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses in '''spring 2018''' and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! </div> </div> 00c9c51e00640d3c56b24cefa6173c0f88bb3a20 84 83 2017-11-17T23:55:20Z Henry 1 /* How to use? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses (especially in '''spring 2018''') and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! </div> </div> 25d609589ea3ef07da6511632fa6d4c5482b22da 85 84 2017-11-18T00:03:48Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses (especially in '''spring 2018''') and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 70f3780ff074f7dbc5ad614bdc64c73cfe33d19c 86 85 2017-11-20T09:59:05Z Henry 1 /* How to use? */ wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses (especially in '''spring 2018''') and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> a2a1e2e67dbf9f59c83178f98046ff7683fa07f4 87 86 2017-11-30T23:50:31Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net]][//cpulator.01xz.net CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/arm]][//cpulator.01xz.net/arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> cccaef1a3c27d2ef96666a6efeea02679f7b3bf0 88 87 2018-01-07T05:13:23Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/v1/]][//cpulator.01xz.net/v1/ CPUlator &mdash; Nios II]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The debugger includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel4_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/v1/?sys=arm]][//cpulator.01xz.net/v1/?sys=arm CPUlator &mdash; ARMv7]</div> <div id="panel4_more" style="display:none;"> This is a shortcut to start CPUlator with an ARMv7 system. The simulated system can be changed within the simulator. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> e343b96f5b8058314f7ccd37dfee5d23d54eef65 89 88 2018-01-07T08:09:27Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]<html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-left: 1.4em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html></div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). The previous version of CPUlator is [//cpulator.01xz.net/v1/ here]. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 86eeb22703c23f19ae1c1a36067b9cf0bb4333cd 90 89 2018-01-08T04:38:24Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]<html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-left: 1.4em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html></div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). The [//cpulator.01xz.net current version] was released Jan. 7, 2018.<br>The previous version of CPUlator is [//cpulator.01xz.net/v1/ here]. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> cde2193fb55fd53a0ef74887256f27f92641a451 91 90 2018-01-21T23:54:27Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]<html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-left: 1.4em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html></div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). Coming soon: MIPS32 release 6 ISA support. The [//cpulator.01xz.net current version] was released Jan. 7, 2018.<br>The previous version of CPUlator is [//cpulator.01xz.net/v1/ here]. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> ff493686c66f2d9cef96f1301ac9b3ce6e8d5bcd 92 91 2018-01-21T23:54:47Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]<html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-left: 1.4em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html></div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II and ARMv7 systems. The simulator also simulates some I/O devices, based on the computer systems used by the Altera University Program. It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). '''Coming soon''': MIPS32 release 6 ISA support. The [//cpulator.01xz.net current version] was released Jan. 7, 2018.<br>The previous version of CPUlator is [//cpulator.01xz.net/v1/ here]. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 5b01de507078bea2b73bacad8819de7594210b05 93 92 2018-01-26T22:49:25Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]<html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-left: 1.4em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html></div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). <html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-right: 1em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html> MIPS32 release 6 ISA support. The [//cpulator.01xz.net current version] was released Jan. 7, 2018.<br>The previous version of CPUlator is [//cpulator.01xz.net/v1/ here]. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 42e54ea91c730e19246128ba5e9a97ff55dc22b0 94 93 2018-03-01T05:40:28Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system Nios II and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). <html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-right: 1em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html> MIPS32 release 6 ISA support. The [//cpulator.01xz.net current version] was released Jan. 7, 2018.<br>The previous version of CPUlator is [//cpulator.01xz.net/v1/ here]. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 1945aac85940ffe1f2a5b50ccd9fa47dc5901434 95 94 2018-03-01T05:40:52Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system MIPS, Nios II, and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). <html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-right: 1em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html> MIPS32 release 6 ISA support. The [//cpulator.01xz.net current version] was released Jan. 7, 2018.<br>The previous version of CPUlator is [//cpulator.01xz.net/v1/ here]. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 6c67ac69050f4306049b630d599a7e719f2bcf11 96 95 2018-03-01T05:43:46Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system MIPS, Nios II, and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems, intended for education use. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). <html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-right: 1em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html> MIPS32 release 6 ISA support. </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 5a3c91f6b2158072e98155b5cd910915e37335cc 97 96 2018-11-23T10:07:14Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system MIPS, Nios II, and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems, intended for education use. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). <html><div style="font-size: 60%; font-variant: small-caps; font-weight: bold; display: inline-block; padding: 1px 5px; background-color: #ff8f00; margin-right: 1em; vertical-align: top; color: #fff; box-shadow: 2px 2px 5px #777; border-radius: 4px;">New!</div></html> MIPS32 release 5 ISA support (Nov. 23, 2018). </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 007c98fa3585cabf2a9db6223d6485f5f6468f17 98 97 2019-01-21T09:42:04Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>h2#firstHeading { display:none;} </style></html> == Welcome == <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system MIPS, Nios II, and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems, intended for education use. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 6e83998c240d282eccb606a22fa9b20ff0900e3c 104 98 2024-08-14T08:44:38Z Henry 1 wikitext text/x-wiki __NOTOC__ <html><style>#firstHeading { display:none;} </style></html> = Welcome = <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system MIPS, Nios II, and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems, intended for education use. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> be136c9ceb8d0a7853787a857d30ef8ea8459bc2 Project:About 4 7 75 40 2017-11-15T04:32:08Z Henry 1 wikitext text/x-wiki === What's with the name? === The name <b>01xz.net</b> is named after the four-state logic used by nets (and variables) in Verilog: '''0''', '''1''', '''x''' (unknown/don't-care), and '''z''' (high impedance). SystemVerilog added two-state (0 and 1) variables to the language, but nets are still always four-state. === More === Here are links to slightly more detailed About pages for each project: * [//hdlbits.01xz.net/wiki/Project:About About HDLBits] * [//asmbits.01xz.net/wiki/Project:About About ASMBits] * [//cpulator.01xz.net/doc.html CPUlator documentation] === What does this site run? ==== This site runs on [https://www.mediawiki.org/wiki/MediaWiki MediaWiki] with the [https://www.mediawiki.org/wiki/Skin:Foreground Foreground skin]. On top of this, substantial new functionality was added as a custom MediaWiki extension. The back-end (compile, judge, progress tracking) is generally PHP calling shell scripts that run various CAD tools, with the results stored into a MariaDB database. CPUlator is static HTML, CSS, and JavaScript. The only server-side code is for running the assembler. The core of the simulator is written in C++ and compiled to asm.js using [http://emscripten.org Emscripten]. The simulation runs entirely inside the client browser with no server-side interaction. a9b1d71056282f2fb07d7c2175837bfd1e4ace0c 76 75 2017-11-15T04:42:40Z Henry 1 wikitext text/x-wiki === What's with the name? === The name <b>01xz.net</b> is named after the four-state logic used by nets (and variables) in Verilog: '''0''', '''1''', '''x''' (unknown/don't-care), and '''z''' (high impedance). SystemVerilog added two-state (0 and 1) variables to the language, but nets are still always four-state. === More === Here are links to slightly more detailed About pages for each project: * [//hdlbits.01xz.net/wiki/Project:About About HDLBits] * [//asmbits.01xz.net/wiki/Project:About About ASMBits] * [//cpulator.01xz.net/doc.html CPUlator documentation] === What does this site run? === This site runs on [https://www.mediawiki.org/wiki/MediaWiki MediaWiki] with the [https://www.mediawiki.org/wiki/Skin:Foreground Foreground skin]. On top of this, substantial new functionality was added as a custom MediaWiki extension. The back-end (compile, judge, progress tracking) is generally PHP calling shell scripts that run various CAD tools, with the results stored into a MariaDB database. CPUlator is static HTML, CSS, and JavaScript. The only server-side code is for running the assembler. The core of the simulator is written in C++ and compiled to asm.js using [http://emscripten.org Emscripten]. The simulation runs entirely inside the client browser with no server-side interaction. bc7c6ad61768413d8dfe35fd0cdbc6f9943040e0 81 76 2017-11-17T20:12:33Z Henry 1 wikitext text/x-wiki === What's with the name? === The name <b>01xz.net</b> is named after the four-state logic used by nets (and variables) in Verilog: '''0''', '''1''', '''x''' (unknown/don't-care), and '''z''' (high impedance). SystemVerilog added two-state (0 and 1) variables to the language, but nets are still always four-state. === More === Here are links to slightly more detailed About pages for each project: * [//hdlbits.01xz.net/wiki/Project:About About HDLBits] * [//asmbits.01xz.net/wiki/Project:About About ASMBits] * [//cpulator.01xz.net/doc.html CPUlator documentation] ===About Me=== I'm [http://www.stuffedcow.net/ Henry Wong], a former lab teaching assistant for ECE253, 243, and 241 at the University of Toronto during my Ph.D. studies. These tools were created during my last few years as TA while pondering how to improve learning when the number of TA hours is finite. === What does this site run? === This site runs on [https://www.mediawiki.org/wiki/MediaWiki MediaWiki] with the [https://www.mediawiki.org/wiki/Skin:Foreground Foreground skin]. On top of this, substantial new functionality was added as a custom MediaWiki extension. The back-end (compile, judge, progress tracking) is generally PHP calling shell scripts that run various CAD tools, with the results stored into a MariaDB database. CPUlator is static HTML, CSS, and JavaScript. The only server-side code is for running the assembler. The core of the simulator is written in C++ and compiled to asm.js using [http://emscripten.org Emscripten]. The simulation runs entirely inside the client browser with no server-side interaction. a87f72f6767e7eb7c2968906ad85987bf0272a74 File:Logo niossim.png 6 6 99 23 2019-03-10T03:37:58Z Henry 1 Henry uploaded a new version of [[File:Logo niossim.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 100 99 2019-03-10T03:41:53Z Henry 1 Henry uploaded a new version of [[File:Logo niossim.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 101 100 2019-03-10T03:44:57Z Henry 1 Henry uploaded a new version of [[File:Logo niossim.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 MediaWiki:Foreground.css 8 8 105 2024-08-14T08:50:15Z Henry 1 Created page with "form#searchform { display: none; }" css text/css form#searchform { display: none; } 108e420ce9bde9266ecedf4a5e6ad7fa94d69f83 MediaWiki:Disclaimers 8 9 106 2024-10-02T04:45:45Z Henry 1 Created page with "-" wikitext text/x-wiki - 3bc15c8aae3e4124dd409035f32ea2fd6835efc9 MediaWiki:Privacy 8 10 107 2024-10-02T04:45:59Z Henry 1 Created page with "-" wikitext text/x-wiki - 3bc15c8aae3e4124dd409035f32ea2fd6835efc9 Main Page 0 1 108 104 2024-10-02T04:48:16Z Henry 1 wikitext text/x-wiki __NOTOC__ <html> <style> div.panel { border: 1px #ccc solid; background: #f8fcff; margin: 0.8em 1.0em; display: block; padding: 1em; } div.panel div.head a:hover { color: #2ba6cb; } div.panel div.head { font-size:1.25em; line-height: 42px; font-weight: bold; display:block; position: relative; } div.panel div.head a { position: relative; z-index: 1; color: #1a6177; padding: 0.8em 0; } div.panel img { display:block; float:left; margin: 7px 0.5em 7px 0; width: 40px; height: 28px; } h3 { margin-top: 1.4em; } div.panel div.head a.plus { display: block; position: absolute; right: 0; top: 0; width: 100%; font-size:36px; line-height:42px; color: #aaa; z-index: 0; text-align: right; padding: 0; } </style></html> <b>This site contains tools that help you learn the fundamentals of the design of computers</b> * [//hdlbits.01xz.net/ '''HDLBits''']: A problem set and online judge to practice digital circuit design in Verilog * [//asmbits.01xz.net/ '''ASMBits''']: Just like HDLBits, but for practicing Nios II or ARMv7 assembly language * [//cpulator.01xz.net/ '''CPUlator''']: An in-browser full-system MIPS, Nios II, and ARMv7 simulator and debugger These tools were originally created to complement second-year undergraduate computer engineering (digital logic and computer organization) courses at the University of Toronto, and have since been used by other similar courses. Why were these created? Practice is essential when learning any new language (or anything else, really). These tools were created to make it quick and easy to do more practice on short problems. ===What's here?=== <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net]][//hdlbits.01xz.net HDLBits]</div> <div id="panel1_more" style="display:none;"> HDLBits is a set of short Verilog design problems. An online judge checks solutions for correctness. The problems set begins in a tutorial style that teaches basic Verilog language features, and progresses to increasingly challenging designs. Each problem requires you to write some Verilog code. When you submit your code, the online judge tests your design for correctness (but unfortunately not coding style). The large number of short problems with instant feedback encourages more practice than (typically more difficult but less frequent) assignments or labs. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel5_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_seq.png|link=//hdlbits.01xz.net/wiki/Iverilog]][//hdlbits.01xz.net/wiki/Iverilog Verilog Simulator]</div> <div id="panel5_more" style="display:none;"> This is a web interface to [http://iverilog.icarus.com/ Icarus Verilog]. Its main purpose is for creating shareable simulations of short bits of Verilog code. The limitations of the web interface mean that running a Verilog simulator offline is more suitable unless you're simulating a very simple circuit. Main limitations: single source file, limited simulation CPU time, no interactive debugging. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Asmbits_logo.png|link=//asmbits.01xz.net]][//asmbits.01xz.net ASMBits]</div> <div id="panel2_more" style="display:none;"> ASMBits is a set of short assembly language programming problems (for Nios II and ARMv7), in the same style as HDLBits. </div> </div> <div class="panel"><div class="head"><html><a href="#" onclick="$('#panel3_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>[[File:Logo_niossim.png|link=//cpulator.01xz.net/]][//cpulator.01xz.net/ CPUlator Simulator]</div> <div id="panel3_more" style="display:none;"> CPUlator is a full-system simulator and debugger for Nios II, ARMv7, and MIPS systems, intended for education use. The simulator also simulates some I/O devices (based on the computer systems used by the Altera University Program for Nios II and ARMv7, based on SPIM for MIPS). It can be used to work on lab assignments without hardware, to debug solutions for ASMBits exercises, and for in-lecture demonstrations. The simulator is complete enough to do most lab assignments that are based on Altera's University Program's computer systems (including interrupts, but excluding MMU). The simulator includes run-time assertions to catch common errors (which hardware cannot do). </div> </div> === How to use? === <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse1_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For students</div> <div id="paneluse1_more" style="display:none;"> * '''Practice''': The HDLBits and ASMBits problem sets includes exercises of varying difficulty. Start with the easiest few problems under each topic. Even if you don't have time to get to the more difficult problems, being quick and accurate at creating simple designs can be a big help. * '''Assembly language programming''': The CPUlator simulator is a nearly-complete simulation of a Nios II and ARMv7 system. It's quicker and easier to debug your lab assignments in the simulator (it even catches some common errors), and in almost all cases programs written in the simulator will work unmodified on real hardware. </div> </div> <div class="panel><div class="head"><html><a href="#" onclick="$('#paneluse2_more').toggle(); return false;" class="plus"><i class="fa fa-angle-double-down" aria-hidden="true"></i></a></html>For instructors</div> <div id="paneluse2_more" style="display:none;"> * '''Practice''': Simply informing students of the availability of optional "extra practice" tends to reach only the subset of students (my experience so far suggests under 10%). Due to the large number of exercises, suggesting exercises that coincide with the current topic may be useful. * '''Code examples''': When answering student questions (e.g., on discussion boards), I often code up a demonstration of the answer. The "Upload and share" button in CPUlator can be used to post a link to [https://cpulator.01xz.net/?loadasm=samples/share/kfgb6taom1.s a code example], while the "share" button on the [https://hdlbits.01xz.net/wiki/Iverilog Icarus Verilog web interface] can be used to link to a simple Verilog code example and testbench. * '''Flipped clasrooms''': The auto-graded exercises could form one component of a flipped classroom, by providing a method for evaluating progress. * '''Demonstrations''': CPUlator may be useful for in-lecture execution of assembly code, where access to the hardware may not be convenient. * '''Other''': If you have more ideas, or if you're thinking of using these tools in your courses and need changes or new features, [mailto:henry@stuffedcow.net send me an email]! ** Teaching something other than Verilog, Nios II, or ARMv7? It may be feasible to support a new tool/HDL/instruction set, but I wouldn't spend the effort to support it unless I know someone will use it. </div> </div> 132f096e52ea0facf7f7a395ce7bf707bb365e53 MediaWiki:Mainpage-title 8 11 109 2024-10-02T04:49:02Z Henry 1 Created page with "Welcome" wikitext text/x-wiki Welcome ca4f9dcf204e2037bfe5884867bead98bd9cbaf8 MediaWiki:Mainpage-title-loggedin 8 12 110 2024-10-02T04:50:30Z Henry 1 Created page with "Welcome" wikitext text/x-wiki Welcome ca4f9dcf204e2037bfe5884867bead98bd9cbaf8